在Java面试的时候会涉及Spark面试,下面给大家总了常见的Spark面试题及答案。
什么是Spark?Spark是由美国加州伯克利大学实验室开发,基于内存计算的大数据并行计算框架,Spark是专为大规模数据处理而设计的快速通用的计算引擎。
Spark有哪些特点?
Spark主要有以下4大特点:
1.计算速度快
由于Spark是基于内存的分布式计算引擎,因此其运算效率很快。
2.易用性
Spark编程支持Java、Scala、Python和R等编程语言,简洁的API设计有助于用户轻松构建并行程序。
3.通用性
Spark提供了完整而强大的技术栈,包括:SQL查询、流式计算、机器学习和图算法组件等。
Spark架构
Spark运行架构,如下图所示:
Spark运行架构包括:
集群资源管理器(Cluster Manager);运行作业任务的工作节点(Worker Node);每个应用的任务控制节点(Driver);每个工作节点上负责具体任务的执行进程(Executor);Spark运行原理
Spark运行流程,如下图所示:
首先:为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控;
其次:资源管理器为Executor分配资源,并启动Executor进程;
再次:SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;
最后:Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。
Spark和Hadoop的区别
Spark和Hadoop的区别,如下:
Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而适用于离线批处理的应用场景。
Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。
Spark和Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 Hadoop 是基于磁盘。
Spark 中的 RDD 是什么?
RDD(Resilient Distributed Datasets)是 Spark 中最基本的数据抽象,它是一种可以并行计算的不可变分布式数据集。
RDD 可以存储在内存或磁盘上,并在多个计算节点上进行操作,RDD 的特点是弹性容错、分区计算和依赖关系跟踪。
Spark 中的 Shuffle 是什么?
Shuffle 是将数据重新分配和排序的过程,它通常发生在数据的重新分区和聚合阶段。
Shuffle 过程是非常昂贵的,因为它需要将大量的数据从一个节点传输到另一个节点,并且需要排序和合并操作。
Spark 中的 Transformation 和 Action 的区别是什么?
Transformation 是指将一个 RDD 转换为另一个 RDD 的操作,例如 :map、filter 和 groupByKey 等;
Action 是指触发计算并返回结果的操作,例如: count、collect 和 saveAsTextFile 等,Action 将触发 Spark 作业的执行,并将计算结果返回给客户端。
Spark 中的广播变量是什么?
广播变量是 Spark 中一种高效地在多个计算节点之间共享值的机制。
广播变量可以在多个任务之间共享只读数据,例如数据集、共享变量和配置信息等。使用广播变量可以避免将大量数据重复传输到每个任务中的问题,从而提高性能。
Spark 中的 DAG 是什么?
DAG(Directed Acyclic Graph)是 Spark 中用于表示数据处理流程的图形模型。
Spark 会根据用户代码生成一个 DAG,该 DAG 包含了所有的 Transformation 和依赖关系,Spark 会根据 DAG 来执行计算,并且会尽可能地复用已经计算过的数据。
Spark和Flink应用场景区别
Spark和Flink的区别,如下:
1.Spark 适合于吞吐量比较大的场景,数据量非常大而且逻辑复杂的批数据处理,并且对计算效率有较高要求,比如:用大数据分析来构建推荐系统进行个性化推等。
2.Flink 主要用来处理要求低延时的任务,实时监控,实时报表,比如:阿里双11实时交易额,实时仓库的场景。
以上就是常见的Spark面试题及答案,